package com.bzkj.basicinfo.mapper;

import com.bzkj.basicinfo.domain.warehouse.PdaMsfxCustomer;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 往来单位Mapper接口
 * 
 * @author lixinyu
 * @date 2025-01-10
 */
@Mapper
public interface PdaMsfxCustomerMapper 
{
    /**
     * 查询往来单位
     *
     * @param customerId 往来单位主键
     * @return 往来单位
     */
    public PdaMsfxCustomer selectPdaMsfxCustomerByCustomerId(String customerId);

    /**
     * 查询往来单位列表
     *
     * @param pdaMsfxCustomer 往来单位
     * @return 往来单位集合
     */
    public List<PdaMsfxCustomer> selectPdaMsfxCustomerList(PdaMsfxCustomer pdaMsfxCustomer);

    /**
     * 根据客户ID列表查询往来单位列表
     *
     * @param customerIds 客户ID列表
     * @param customerName 客户名称（可选）
     * @return 往来单位集合
     */
    public List<PdaMsfxCustomer> selectPdaMsfxCustomerByIds(@Param("customerIds") List<String> customerIds, @Param("customerName") String customerName);

    /**
     * 根据关键词查询往来单位列表（用于下拉选择）
     *
     * @param keyword 关键词
     * @return 往来单位集合（包含name和entId字段）
     */
    public List<Map<String, Object>> selectCustomerListByKeyword(@Param("keyword") String keyword);

    /**
     * 新增往来单位
     * 
     * @param pdaMsfxCustomer 往来单位
     * @return 结果
     */
    public int insertPdaMsfxCustomer(PdaMsfxCustomer pdaMsfxCustomer);

    /**
     * 修改往来单位
     * 
     * @param pdaMsfxCustomer 往来单位
     * @return 结果
     */
    public int updatePdaMsfxCustomer(PdaMsfxCustomer pdaMsfxCustomer);

    /**
     * 删除往来单位
     *
     * @param customerId 往来单位主键
     * @return 结果
     */
    public int deletePdaMsfxCustomerByCustomerId(String customerId);

    /**
     * 批量删除往来单位
     *
     * @param customerIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePdaMsfxCustomerByCustomerIds(String[] customerIds);

    /**
     * 批量插入往来单位
     *
     * @param customerList 往来单位列表
     * @return 结果
     */
    public int insertPdaMsfxCustomerList(@Param("customerList") List<PdaMsfxCustomer> customerList);

    /**
     * 根据客户关联企业ID查询往来单位
     *
     * @param customerRefEntId 客户关联企业ID
     * @return 往来单位
     */
    public PdaMsfxCustomer selectPdaMsfxCustomerByRefEntId(@Param("customerRefEntId") String customerRefEntId);

    /**
     * 检查客户关联企业ID是否存在
     *
     * @param customerRefEntId 客户关联企业ID
     * @return 数量
     */
    public int checkCustomerRefEntIdExists(@Param("customerRefEntId") String customerRefEntId);
}
